package com.zmz.Stream;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

/**
 * Create with IntelliT IDEA
 *
 * @Author: zhengmingzhe
 * @Date: 2022/07/31/ 18:56
 * @Description: 3.5.3分组
 *
 * 分区：将Stream按条件分为两个Map，比如员工按薪资是否高于8000分为两部分。
 *
 * 分组：将集合分为多个Map，比如员工按性别分组，有单级分组和多级分组
 */
public class Stream10 {
    public static void main(String[] args) {
        List<Person> personList = new ArrayList<>();
        personList.add(new Person("的撒", 8000, 22, "女", "武汉"));
        personList.add(new Person("法按时", 7000, 22, "女", "武汉"));
        personList.add(new Person("的阿萨", 7800, 22, "男", "武汉"));
        personList.add(new Person("答案", 12000, 12, "女", "武汉"));
        personList.add(new Person("滴放", 22000, 21, "女", "北京"));
        //按员工薪资是否高于8000分组 最后的map只有两个key true 和false
        Map<Boolean,List<Person>> personMap=personList.stream().collect(Collectors.groupingBy(p->p.getSalary()>=8000));
        System.out.println(personMap);


        //按员工性别和地区分组 最后的map只有两个key 男 和女
        Map<String,List<Person>> personMap2=personList.stream().collect(Collectors.groupingBy(p->p.getSex()));
        System.out.println(personMap2);

        //按地区分组 最后的map有多个key key为String类型的地区名
        Map<String,List<Person>> personMap3=personList.stream().collect(Collectors.groupingBy(p->p.getArea()));
        System.out.println(personMap3);
    }
}
